perm filename X[X,ALS] blob
sn#081292 filedate 1974-01-17 generic text, type T, neo UTF8
00010 BEGIN "MARKX"
00020 DEFINE ⊂="COMMENT"; ⊂ NOV.26,1973;
00030 ⊂ This program is a very simple pitch marking routine to be used to
00040 suppliment Neil's routine in certain cases;
00050 DEFINE ⊃="⊂";
00060 DEFINE CR="'15",LF="'12",CRLF="CR&LF",TB="'11";
00070 REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
00080 LABEL STARTP,STOPP,TOFORM;
00090 DEFINE \=" "; ⊂ DEFINE \="SAFE"; ⊂ Alternarte definitions;
00100 INTEGER SUM,SUMM,SUMP,MAX,MIN,
00110 SUMREF,SUMSAV,SUMMIN,SUMMAX,SUMOLD;
00120 INTEGER MAXOLD,MINOLD,MARGIN,PER,PERMIN,PERMAX;
00130 INTEGER QOLD,QSAVE,QREF,QOLD2;
00140 INTEGER ZEROC,ZEROF,DX;
00150 EXTERNAL INTEGER INFLAG,NX;
00160 \ INTERNAL INTEGER ARRAY D[0:767];
00170 REAL X,SX; \ REAL ARRAY WINDOW[0:512];
00180 INTERNAL REAL R0;
00190 INTEGER LPCOPT;
00200 \ INTEGER ARRAY DPYBUF[0:1535];
00210 \ INTERNAL INTEGER ARRAY FVAL,NVAL[0:8];
00220 \ EXTERNAL INTEGER ARRAY NEW[0:512];
00230 INTEGER FX;
00240 INTEGER I,J,K,L,P,PP,Q,QQ,R,DK,DDK,DDDK,DVAL,DDVAL,DDDVAL,ALPHA,
00250 POINTF,POINTX,STATE,DELTA,VAL,CHAN1,EOF,POINTT,POINTV;
00260 INTERNAL INTEGER M,N,PERIOD;
00270 INTEGER PT0,PT1,PT2,X0,X1,Y0,Y1,X2,Y2,
00280 PTCNT,PICK,JP,JPP,JPX,OPT,OPT1,SHUFCT;
00290 INTEGER II,JJ,KK,NN,SEGC,BRK,EOFA,EOFT,EOFTF,READ3,LFX,PITX,PITY,
00300 SEGTOT,SEGIN,KKT,NNT,ITT,JTT,KTT;
00310 BOOLEAN ER;
00320 INTEGER CHAN2,CHAN3,CHAN4,CHAN6,CHANX;
00330 INTERNAL INTEGER CHAN5;
00340 \ INTEGER ARRAY BUF,BUFT,BUFTT[0:511];
00350 STRING FILEN,FILEF,READ,READ1,READT,
00360 READTT,FILEO,READ2,FILEQ,TFILE,FILLST,FILEP;
00370
00380 PROCEDURE OUTALL(STRING S);
00390 BEGIN
00400 STRING SS; INTEGER J;
00410 SETBREAK(18,0,NULL,"OSN");
00420 SS←SCAN(S,18,J);
00430 OUTSTR(SS);
00440 END;
00450
00460 PROCEDURE DATAIN;
00470 BEGIN
00480 INTEGER J;
00490 FOR J←0 STEP 1 UNTIL 511 DO BUF[J]←0;
00500 ⊂ IF EOF=0 THEN OUTSTR("BUF") ELSE OUTSTR(" EOF ");
00510 IF EOF=0 THEN ARRYIN(CHAN1,BUF[0],512);
00520 ⊂ IF EOF=0 THEN OUTSTR(" New BUF ") ELSE OUTSTR(" EOF ");
00530 POINTX←POINT(12,BUF[0],-1);
00540 SEGC←II←II+12; JJ←II+11;
00550 END;
00560
00570
00580 PROCEDURE DTTTIN;
00590 BEGIN
00600 INTEGER J;
00610 IF EOFT=0 THEN ARRYIN(CHAN3,BUFTT[0],512)
00620 ELSE OUTSTR
00630 ("No more .P data with JJ= "&CVS(JJ)&"SEGC= "&CVS(SEGC)&CRLF);
00640 FOR J←0 STEP 1 UNTIL 511 DO IF BUFTT[J]=0 THEN BUFTT[J]←'377777777777;
00650 ITT←BUFTT[0] LSH -15; KTT←0; JTT←BUFTT[511] LSH -15;
00660 ⊂ FOR J←0 STEP 1 UNTIL 10 DO OUTSTR(CVOS(BUFTT[J])&TB);
00670 END;
00680
00690
00700 PROCEDURE DATOUT;
00710 BEGIN "DATOUT"
00720 INTEGER I,J;
00730
00740 ARRYOUT(CHAN5,BUFT[0],512);
00750 FOR I←0 STEP 1 UNTIL 511 DO BUFT[I]←0;
00760 END "DATOUT";
00770
00780
00790 PROCEDURE MARK;
00800 BEGIN "MARK"
00810 INTEGER I,JJ,K,L,JJP,LP,PT2;
00820
00830 RIVECT(0,-130); SETFORMAT(3,0);
00840 FOR I←0 STEP 20 UNTIL 340 DO BEGIN
00850 DPYSST(CVS(I)); RIVECT(15,0); END;
00860 RIVECT(-555,30); RIVECT(-500,0);
00870
00880 FOR I←0 STEP 100 UNTIL 300 DO BEGIN "HUNDRED"
00890 RIVECT(0,30); RVECT(0,-30);
00900 FOR JJ←0 STEP 50 UNTIL 50 DO BEGIN "FIFTY"
00910 FOR K←1 STEP 1 UNTIL 5 DO BEGIN "TEN"
00920 RIVECT(15,0); RVECT(0,5); RIVECT(0,-5);
00930 RIVECT(15,0); RVECT(0,10);RIVECT(0,-10);
00940 END "TEN";
00950 RVECT(0,20); RIVECT(0,-20);
00960 IF I≥300 THEN DONE "HUNDRED";
00970 END "FIFTY";
00980 END "HUNDRED";
00990 RIVECT(-550,100); RIVECT(-500,0);
01000
01010 K←D[0]%8; RIVECT(0,K);
01020 FOR I←1 STEP 1 UNTIL 350 DO BEGIN
01030 JJP←D[I]%8;
01040 LP←JJP-K; RVECT(3,LP); K←JJP; END;
01050 RIVECT(-550,-K); RIVECT(-500,0);
01060
01070 RIVECT(500,0);
01080 FOR JJ←1 STEP 1 UNTIL 2 DO IF FVAL[JJ]≤375 THEN BEGIN
01090 L←3*FVAL[JJ]-500;
01100 RIVECT(L,120); RVECT(0,-70); RIVECT(0,-25); RVECT(0,-25);
01110 RIVECT(-25,0); RVECT(50,0);
01120 RIVECT(-25,0); RIVECT(-L,0); END;
01130
01140 FOR JJ←1 STEP 1 UNTIL 3 DO IF NVAL[JJ]≤375 THEN BEGIN
01150 L←3*NVAL[JJ]-500;
01160 RIVECT(L,0);RIVECT(-25,0); RVECT(50,0);
01170 RIVECT(-25,0); RVECT(0,-120); RIVECT(-L,120); END;
01180
01190 RIVECT(-500,0);
01200 DPYOUT(0); PTOCHW(0,'10120);
01210
01220 END "MARK";
01230
01240 INTERNAL PROCEDURE CALCOMP(STRING FILE;INTEGER ARRAY BUFR);
01250 ⊃ Outputs display buffer BUFR to disk file FILE in a format
01260 readable by the Nealy Calcomp plotter program PLTVEC, and by
01270 the Quam Video Synthesizer program MIRTOP;
01280 IF FILE THEN
01290 BEGIN INTEGER DSIZ,CCCHN;
01300 OPEN(CCCHN←GETCHAN,"DSK",'14,0,1,0,0,0);
01310 ENTER(CCCHN,FILEN&".GRF",0);
01320 DPYPARS;DSIZ←BUFR[1]+4;
01330 ARRYOUT(CCCHN,BUFR[0],2);WORDOUT(CCCHN,0);
01340 ARRYOUT(CCCHN,BUFR[2],DSIZ-2);
01350 RELEASE(CCCHN);
01360 END "CALCOMP";
01370
01380
01390 PROCEDURE PITCH;
01400 BEGIN "PITCH"
01410
01420 CASE STATE OF BEGIN
01430
01440 ⊂ STATE 0 INDETERMINATE STATE;
01450 IF VAL>0 THEN
01460 BEGIN
01470 STATE←1; SUM←MAX←MIN←SUMOLD←0; SUMP←VAL; SUMSAV←SUMREF←SUMMIN;
01480 QOLD←QQ;
01490 END;
01500
01510 ⊂ STATE 1 INITIAL POSITIVE STATE;
01520 IF VAL≤0 THEN
01530 BEGIN
01540 IF SUM<MARGIN THEN STATE←0 ELSE
01550 BEGIN
01560 STATE←4; SUM←SUMOLD+SUMP-VAL;
01570 MAX←MAXOLD; MIN←MINOLD;
01580 IF VAL<MIN THEN MIN←VAL;
01590 END;
01600 END ELSE
01610 BEGIN
01620 SUMP←SUMP+VAL;
01630 IF VAL<ALPHA THEN BEGIN SUMP←VAL; QOLD←QQ-1; END;
01640 IF VAL>MAX THEN MAX←VAL;
01650 IF SUMP>DELTA THEN
01660 BEGIN
01670 STATE←2; SUM←SUMP;
01680 P←0;
01690 IF SUMSAV=SUMREF ∧ PER≥PERIOD*3%2 THEN P←1 ELSE
01700 IF SUMOLD≤SUMSAV THEN SUMSAV←SUMOLD ELSE
01710 IF PER>PERIOD*3%2 THEN P←2 ELSE
01720 IF (SUMOLD≥SUMREF*3%4) ∧ PER≥PERIOD*3%4 THEN P←3 ELSE
01730 IF (PER≥PERIOD*7%8)∧(SUMOLD≥SUMREF%4) THEN P←4 ELSE
01740 IF PER≥PERIOD*3%4 THEN P←5;
01750
01760 ⊂ OUTSTR(CVS(PITX)&" QREF="&CVS(QREF)&" REF="&CVS(SUMREF)&" OLD="&CVS(SUMOLD)
01770 &" SAV="&CVS(SUMSAV)&" STATE="&CVS(STATE)&" P="&CVS(P)
01780 &" QQ="&CVS(QQ)&" PER="&CVS(PER)&CRLF);
01790 IF P≥1 THEN
01800 BEGIN
01810 BUFT[PITX]←(QSAVE LSH 15)+((SUMOLD LSH -6) LAND '77770)+P;
01820 SUMREF←SUMOLD; PER←QSAVE-QREF; QREF←QSAVE;
01830 ⊂ IF SUMREF<SUMMIN THEN SUMREF←SUMMIN;
01840 PERIOD←(2*PERIOD+PER)%3;
01850 IF PERIOD<PERMIN THEN PERIOD←PERMIN ELSE
01860 IF PERIOD>PERMAX THEN PERIOD←PERMAX;
01870 IF (PITX←PITX+1)≥512 THEN DATOUT;
01880 JPP←0;
01890 END;
01900
01910 END;
01920 END;
01930
01940 ⊂ STATE 2 CONFIRMED POSITIVE STATE;
01950 IF VAL>0 THEN
01960 BEGIN
01970 SUM←SUM+VAL; IF VAL>MAX THEN MAX←VAL;
01980 END ELSE
01990 BEGIN
02000 STATE←3; SUMM←-VAL; MIN←VAL;
02010 END;
02020
02030 ⊂ STATE 3 INITIAL NEGATIVE STATE;
02040 IF VAL>0 THEN
02050 BEGIN
02060 IF SUM<MARGIN THEN STATE←0 ELSE
02070 BEGIN
02080 STATE←2; SUM←SUM+SUMM+VAL;
02090 IF VAL>MAX THEN MAX←VAL;
02100 END;
02110 END ELSE
02120 BEGIN
02130 SUMM←SUMM-VAL;
02140 IF VAL<MIN THEN MIN←VAL;
02150 IF SUMM>DELTA THEN
02160 BEGIN
02170 STATE←4; SUM←SUM+SUMM;
02180 END;
02190 END;
02200
02210 ⊂ STATE 4 CONFIRMED NEGATIVE STATE;
02220 IF VAL≤0 THEN
02230 BEGIN
02240 SUM←SUM-VAL; IF VAL<MIN THEN MIN←VAL;
02250 END ELSE
02260 BEGIN
02270 STATE←1; QSAVE←QOLD; SUMSAV←SUMOLD; SUMOLD←SUM; PER←QSAVE-QREF;
02280 MAXOLD←MAX; MINOLD←MIN;
02290 min←sum←0;
02300 SUMP←MAX←VAL; QOLD←QQ;
02310 END;
02320
02330 END;
02340 ⊂ OUTSTR("State="&cvs(state)&" VAL="&CVS(VAL)&" PITX="&CVS(PITX)&
02350 " PITX="&CVS(PITX)&" SUM="&CVS(SUM)&" SUMP="&CVS(SUMP)&
02360 " SUMM="&CVS(SUMM)&" SUMOLD="&CVS(SUMOLD)&" SUMREF="&CVS(SUMREF)&CRLF);
02370 QQ←QQ+1;
02380
02390 IF ((QQ-QREF)≥PERIOD*2) THEN BEGIN
02400 BUFT[PITX]←(QREF+PERIOD) LSH 15;
02410 ⊂ OUTSTR("B "&CVS(PITX)&" QREF="&CVS(QREF)&" REF="&CVS(SUMREF)&" OLD="&CVS(SUMOLD)
02420 &" SAV="&CVS(SUMSAV)&" STATE="&CVS(STATE)&" QQ="&CVS(QQ)
02430 &" PER="&CVS(PER)&CRLF);
02440 PITX←PITX+1; QREF←QREF+PERIOD; STATE←SUM←0;
02450 END;
02460 END "PITCH";
00010 FILEN←"HI20.001[CMP,VIN]";
00020 FILEO←"SEG1.ALS[SYN,ALS]";
00030 PERIOD←180; PERMAX←220; PERMIN←100; MARGIN←100; DELTA←900; QQ←0;
00040 SUMMIN←200; ALPHA←40;
00050
00060 STDBRK(1);
00070 SETBREAK(14,"∃",NULL,"INS");
00080 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
00090 SETBREAK(16,'56,NULL,"INA");
00100 SETBREAK(17,'12,'15,"INS");
00110
00120 CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4; CHAN5←5; CHAN6←6;
00130 OUTSTR("This program generates a file of pitch markers similar to "&
00140 "the .P files"&CRLF&" but with extension of .ALS."&CRLF);
00150 OUTSTR("At present this program takes acoustic data from [CMP,VIN],"&
00160 CRLF&TB&"and pulse informstion from .P[PIT,NJM] files"&CRLF&TB&CRLF&LF);
00170
00180
00190 STARTP:
00200
00210 OUTSTR(CRLF&"Type number of file to start (CR only for 1) ");
00220 IF (READ←INCHWL)="" THEN PP←1 ELSE PP←CVD(READ);
00230 OUTSTR("Start display with sample # (CR for first phone) ");
00240 IF (READ←INCHWL)="" THEN JPP←1 ELSE BEGIN JPP←0; JP←CVD(READ); END;
00250
00260 ⊂ Begin FILEREAD;
00270 FOR PP←PP STEP 1 UNTIL 26 DO BEGIN "FILEREAD"
00280 CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,2,0,0,0,EOF);
00290 SETFORMAT(-3,0); FILEQ←CVS(PP);
00300 FILEN←FILEN[1 TO 5]&FILEQ&"[CMP,VIN]";
00310 LOOKUP(CHAN1,FILEN,ER); TFILE←FILEN;
00320 WHILE ER DO BEGIN
00330 IF PP>1 THEN BEGIN OUTSTR("Out of data, will terminate."&CRLF);
00340 GOTO STOPP; END;
00350 OUTSTR(CRLF&"Can not find file "&TFILE&" File= ");
00360 LOOKUP(CHAN1,TFILE←INCHWL,ER); END;
00370 J←K←L←STATE←VAL←0; R←-1;
00380 SETFORMAT(1,0); FILEQ←CVS(PP); JP←FVAL[0]←1000; R←-1; CLRBUF;
00390 II←-11; JJ←-1;
00400
00410 DATAIN; SUMREF←SUMOLD←SUMSAV←SUMMIN;
00420 PITX←0; BUFT[PITX]←1; PITX←1;
00430 FOR J←0 STEP 1 UNTIL 767 DO BEGIN
00440 VAL←ILDB(POINTX); IF VAL>2047 THEN VAL←VAL-4096;
00450 D[J]←VAL; PITCH; END;
00460 SEGIN←6; FVAL[1]←FVAL[2]←0;
00470
00480
00490 FILEP←FILEO[1 TO 3]&FILEQ&".ALS[SYN,ALS]";
00500 CLOSE(CHAN5); OPEN(CHAN5,"DSK",'14,0,2,0,0,0);
00510 ENTER(CHAN5,FILEP,0);
00520 OUTSTR("File "&FILEP&" has been opened"&CRLF);
00530
00540
00550 READ2←FILEP;
00560 READTT←SCAN(READ2,16,J)&"P[PIT,NJM]";
00570 ⊂ OUTSTR(READTT&CRLF);
00580 CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,10,0,0,0,EOFT);
00590 LOOKUP(CHAN3,READTT,ER); TFILE←READTT;
00600 IF ER THEN BEGIN
00610 OUTSTR("File "&READTT&" not found (S to start, space bar to ignore) ");
00620 IF (READ1←INCHRW)="S" THEN GOTO STARTP ELSE BEGIN
00630 BUFTT[0]←'77777; BUFTT[1]←'377777700000;ITT←0; JTT←'3777777;
00640 CLRBUF; END; END;
00650
00660 FOR I←1 STEP 1 UNTIL 8 DO FVAL[I]←0; FVAL[0]←10000;
00670 DTTTIN;
00680 FVAL[4]←BUFTT[0]; FVAL[1]←(FVAL[4] LSH -15)-(SEGIN-6)*128;
00690 FVAL[5]←BUFTT[1]; FVAL[2]←(FVAL[5] LSH -15)-(SEGIN-6)*128;
00700 FVAL[6]←BUFTT[2]; FVAL[3]←(FVAL[6] LSH -15)-(SEGIN-6)*128;KTT←2;
00710 NVAL[5]←BUFT[0]; NVAL[2]←(NVAL[5] LSH -15)-(SEGIN-6)*128;
00720 NVAL[6]←BUFT[1]; NVAL[3]←(NVAL[6] LSH -15)-(SEGIN-6)*128; PITY←1;
00730
00740
00750
00760
00770 ⊂ Begin "GET";
00780
00790 WHILE TRUE DO BEGIN "GET"
00800
00810
00820 ⊂ OUTSTR("JTT="&CVS(JTT)&TB&"J="&CVS(J)&CRLF);
00830 IF JJ<SEGIN THEN IF EOF≠0 THEN DONE "GET" ELSE DATAIN;
00840
00850 ⊂ OUTSTR("JJ="&CVS(JTT)&TB&"J="&CVS(J)&"before DTTTIN");
00860 IF JTT<(SEGIN-1)*128 THEN DTTTIN;
00870 ⊂ OUTSTR(" and after JTT="&CVS(JTT)&CRLF);
00880
00890 ⊂ FVAL and NVAL assignments (NVAL are newly computed values)
00900 [1] DELTA FOR FIRST MARKER
00910 [2] DELTA FOR SECOND MARKER
00920 [3] DELTA FOR THIRD MARKER
00930 [4] PULSE DATE FOR FIRST MARKER
00940 [5] PULSE DATA FOR SECOND MARKER
00950 [6] PULSE DATA FOR THIRD MARKER;
00960
00970
00980 NVAL[1]←NVAL[2]; NVAL[4]←NVAL[5];
00990
01000 WHILE NVAL[1]>127 DO BEGIN
01010 IF SEGIN≥JJ THEN IF EOF≠0 THEN DONE "GET" ELSE DATAIN;
01020 FOR Q←0 STEP 1 UNTIL 639 DO D[Q]←D[Q+128];
01030 FOR Q←640 STEP 1 UNTIL 767 DO BEGIN
01040 VAL←ILDB(POINTX); IF VAL>2047 THEN VAL←VAL-4096;
01050 D[Q]←VAL; PITCH; END; SEGIN←SEGIN+1; ⊂ OUTSTR("RELOAD"&CRLF);
01060 FVAL[1]←FVAL[1]-128; FVAL[2]←FVAL[2]-128; FVAL[3]←FVAL[3]-128;
01070 NVAL[1]←NVAL[1]-128; NVAL[3]←NVAL[3]-128; END;
01080
01090 WHILE FVAL[1]<0 DO BEGIN FVAL[1]←FVAL[2]; FVAL[2]←FVAL[3];
01100 FVAL[4]←FVAL[5]; FVAL[5]←FVAL[6];
01110 KTT←KTT+1; IF KTT≥512 THEN DTTTIN;
01120 FVAL[6]←BUFTT[KTT];
01130 FVAL[3]←(FVAL[6] LSH -15)-(SEGIN-6)*128;END;
01140
01150 NVAL[2]←NVAL[3]; NVAL[5]←NVAL[6];
01160 PITY←PITY+1;
01170 NVAL[6]←BUFT[PITY];
01180 NVAL[3]←(NVAL[6] LSH -15)-(SEGIN-6)*128;
01190
01200 ⊂ OUTSTR(CVS(FVAL[1])&TB&CVS(FVAL[2])&TB&CVS(FVAL[3])&
01210 TB&CVS(FVAL[4] LSH -15)&TB&
01220 CVS(FVAL[5] LSH -15)&TB&CVS(FVAL[6] LSH -15)&CRLF);
01230 ⊂ OUTSTR(CVS(NVAL[1])&TB&CVS(NVAL[2])&TB&CVS(NVAL[3])&
01240 TB&CVS(NVAL[4] LSH -15)&TB&
01250 CVS(NVAL[5] LSH -15)&TB&CVS(NVAL[6] LSH -15)&CRLF);
01260
01270 ⊂ OUTSTR(CRLF&CVS(SEGIN)&TB&CVS(FVAL[1])&TB&CVS(FVAL[2])&TB&CVS(FVAL[3])&TB&
01280 CVS(FVAL[4] LSH -15)&
01290 " "&CVS(FVAL[5] LSH -15)&" "&CVS(FVAL[6] LSH -15)&TB&TB);
01300
01310
01320 R←R+1; OUTSTR(CVS(NVAL[4] LSH -15)&TB); IF (R MOD 10)=9 THEN OUTSTR(CRLF);
01330
01340
00010 JP←JP-1; READ1←INCHRS;
00020 IF (READ1="F")∨(READ1="f") THEN BEGIN CLRBUF; READ1←"";
00030 JP←-10; OUTSTR(CRLF&LF&"Will stop at the end of this file"&CRLF&LF); END;
00040 IF (READ1="E")∨(READ1="e") then goto stopp;
00050
00060 IF (READ1=" ")∨(JPP=0) THEN BEGIN "SHOW"
00070 ⊂ IF (READ1=" ")∨((ABS(FVAL[1]-NVAL[1])>5)∨(ABS(FVAL[2]-NVAL[2])>5)) THEN
00080 BEGIN "SHOW";
00090 TYPLOC(512,170); DPYSET(DPYBUF);
00100 JP←1;
00110 OUTSTR(CRLF&"File "&FILEN&TB);
00120 OUTSTR("from "&CVS(NVAL[4] LSH -15)
00130 &" to "&CVS(NVAL[5] LSH -15)&TB&CVOS(NVAL[4] LAND '77777)&","&
00140 CVOS(NVAL[5] LAND '77777)&TB&CVS(SUMREF)&CRLF);
00150 AIVECT(-599,0);MARK;
00160 DPYOUT(0);PTOCHW(0,'10120);
00170 ⊂ OUTSTR("Type P for XGP copy file or type next command.");
00180 ⊂ OUTSTR("Space to run, LF for next, # for sample #, +# to add periods."&CRLF);
00190
00200 READ1←INCHRW;
00210 WHILE (READ1="W")∨(READ1="w") DO BEGIN DPYOUT(0) ;
00220 PTOCHW(0,'10120);READ1←INCHRW; END;
00230 IF (READ1="P")∨(READ1="p") THEN BEGIN CALCOMP("PLOTX",DPYBUF);
00240 OUTSTR("EX DPYXGP[X,ALS] plots PLOTX.GRF on the XGP. Next command please."&CRLF);
00250 READ1←INCHRW; END;
00260 K←CVASC(READ1); OPT1←0;
00270
00280 IF K=CVASC("+") THEN BEGIN
00290 JP←CVD(INCHWL); FVAL[0]←10000; END;
00300 IF K≥CVASC("0") THEN IF K≤CVASC("9") THEN BEGIN
00310 FVAL[0]←INCHWL; JP←10000; END;
00320 IF READ1=" " THEN FVAL[0]←JP←10000;
00330 IF(READ1="F")∨(READ1="f") THEN JP←-1;
00340 IF (READ1="E")∨(READ1="e") THEN GOTO STOPP;
00350
00360 IF (READ1='15)∨(READ1='12) THEN BEGIN JP←1; CLRBUF; END;
00370
00380 TOFORM:
00390 IF (READ1="S")∨(READ1="s") THEN JP←JP+1;
00400 IF (READ1="E")∨(READ1="e") THEN GOTO STOPP;
00410 PTOCHW(0,'10103); CLRBUF; TYPLOC(512,-170); PTOCHW(0,'10120);
00420 END "SHOW";
00430
00440
00450 END "GET";
00460 CLOSE(CHAN1); CLOSE(CHAN3);
00470 DATOUT; CLOSE(CHAN5);
00480 IF JP<0 THEN DONE;
00490 END "FILEREAD";
00500
00510 OUTSTR("Data are exhausted"&CRLF&LF);
00520 STOPP: PTOCHW(0,'10103); PTOCHW(0,'10120);
00530 CLOSE(CHAN1);CLOSE(CHAN2);CLOSE(CHAN3);
00540 CLOSE(CHAN4);CLOSE(CHAN5);CLOSE(CHAN6);
00550
00560 END "MARKX";
00570